Modern computer keyboards are designed with cost savings as a major factor. To this end, instead of a physical microswitch underneath each computer key (with the attendant cost of each microswitch), keyboards typically have two layers of membranes with circuits printed on them, and an inert non-conducting layer with holes inserted between the two membrane layers. The circuits and holes are arranged in such a way that when a key is depressed, the top and bottom membranes are forced together precisely underneath the key depressed, completing the circuit. The foregoing mechanism is depicted in FIG. 1. Typically, the membranes are made of inexpensive flexible material and are printed with conductive copper alloy strips, and have no logic gates, resistors or any other electronic components.
A microcontroller is connected to the top and bottom membranes and detects the keystrokes by the completion of these circuits and sends the appropriate signal to the host computer regarding which key is pressed.
Typically, such a microcontroller typically does not have the more than 100 inputs associated with a computer keyboard. Instead, most microcontrollers have approximately 10 inputs in order to save costs. This means that there is no dedicated input per key, so the circuit on the membranes is designed in such a way so that typically 2 to 3 inputs are activated each time a key is depressed (e.g., the same combination is of inputs is activated each time the “A” key is depressed).
The microcontroller is accordingly programmed to interpret these combinations as distinct key presses, so even with a limited number of inputs, the microcontroller can recognize all 108 or more keys on a conventional computer keyboard. This combination of microcontroller program and membrane circuit design is commonly known in the industry as a keyboard matrix.
However, a disadvantage to this method is that if three or more keys (or whatever multiples depending on the particular microcontroller and membrane configuration) that have overlapping inputs are depressed at the same time, the microcontroller may be unable to discern based upon the digital input which keys are depressed or if indeed a key has been released.
For example: assuming “A” uses input 1, 2, 3; “B” inputs 2, 3, 4; and “C” inputs 3, 4, 5. If “A” and “C” are actuated together, inputs 1, 2, 3, 4, 5 become active. But “B” also codes to 2, 3, 4. Therefore, the microcontroller cannot determine, based upon the inputs, whether “B” is active or not.
When this happens, the typical response to this overlap is the microcontroller sending a keyboard error signal to the host computer. The keyboard then interprets all keys as released, and the host computer typically sends the user a warning (most commonly as an audible “beep”). The user's input when this error occurs is lost, which is undesirable when entering data quickly, or if playing a computer game or engaged in other applications where timing is important. This issue is known in the industry as the “ghost” or “phantom” key problem.
The matrix system of membranes and microcontrollers in effect introduced a problem that did not previously exist when individual microswitches were used in each keyboard (old “IBM” style keyboards, after the original popularizer of this type of keyboard with individual microswitches). Each microswitch would send a distinct signal to the microcontroller, so there would be no issue of “ghosting.” However, this is a relatively expensive alternative which is why the membrane and simple microcontroller combination was initially introduced.
Typically, keyboard manufacturers make educated guesses regarding which keys users are most likely to press simultaneously, and arrange the membrane circuits so that keys that are more likely to be pressed together do not conflict to create a ghosting error. It is impossible, however, to predict how users are going to be using keyboards in every instance, especially with more sophisticated and highly customizable programs (such as graphics editing applications and games, for example) that allow users to determine which keys they want to press simultaneously. For example, a conventional keyboard will not properly recognize a user's depression of more than four keys on a number pad at once, instead producing an error.